package com.user.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.user.dao.order.*;
import com.user.domain.Order;
import com.user.utils.R;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
 * @author YU
 * @Description 针对表【order】的数据库操作Service
 * @Date 2024-01-08 11:33:40
 */
public interface OrderService extends IService<Order> {

    /**
     * 保存订单
     *
     * @param order 订单信息
     * @return R
     * @throws IOException 异常
     */
    R saveOrder(OrderDao order) throws IOException;

    /**
     * 获取用户订单
     *
     * @param order 查询条件
     * @return R
     */
    R getUserOrder(QueryPageOrder order);

    /**
     * 支付订单
     *
     * @param orderPay 订单支付信息
     * @return R
     */
    R toPay(OrderPay orderPay);

    /**
     * 支付宝支付回调
     *
     * @param request 请求
     * @return R
     */
    R payNotify(HttpServletRequest request);

    /**
     * 退款
     *
     * @param orderId 订单ID
     * @return R
     */
    R refund(Integer orderId);

    /**
     * 商家查询订单
     *
     * @param orderMerchant 查询条件
     * @return R
     */
    R getOrderByRestaurantId(QueryPageOrderMerchant orderMerchant);

    /**
     * 评分
     *
     * @param scoreDao 评分信息
     * @return R
     */
    R score(ScoreDao scoreDao);

    /**
     * 根据订单ID查询订单
     *
     * @param orderId 订单ID
     * @return R
     */
    R getOrderById(Integer orderId);

    /**
     * 取消订单
     *
     * @param orderId 订单ID
     * @return R
     */
    R cancelOrder(Integer orderId) throws IOException;

    /**
     * 获取今天和明天的订单
     *
     * @param restaurantId 餐厅ID
     * @return R
     */
    R getTodayOrder(Integer restaurantId);

    /**
     * 获取已完成餐厅
     *
     * @param userId 用户ID
     * @return R
     */
    R getRestaurantOrder(Integer userId);

    R test1(Integer orderId);

    R test2(Integer orderId);
}
